package day2;

import java.util.Scanner;

import org.junit.Test;

public class Demo {

	public static void main(String[] args) {
		// 年龄： 22
		// 在计算机中把数据分成了不同的数据类型：
		// 表达整数：int  22
		// 表达字符串：String   "zhangsan"
		// 表示小数：double   3.14
		
		// int : 代表数据类型
		// age ：变量 variable
		//  =  : 等号是不相等的意思，在这里表示把右边这个值22赋值给等号左边这个变量 
		int age = 22;
		age = 34;
		// 被final修饰的是：常量
		final int num = 23;
		// The final local variable num cannot be assigned. 
		// num = 44;
		
		double pi = 3.14;
		pi = 3.1415;
		
		String str = "zhangsan";
		
		byte b = 12;
		b = 127;
		b = -128;
		
		// char character
		char ch1 = 'a';
		// Duplicate local variable ch1
		// char ch1 = '0';
		char ch2 = '0';
		char ch3 = '中';
		System.out.println(ch1);
		System.out.println(ch2);
		System.out.println(ch3);
		
		boolean b1 = true;
		boolean b2 = false;
		
		int num1 = 23;
		int num2 = 21;
		System.out.println(num1 > num2);// true
	}
	
	// 这个方法不能有返回值，不能有参数
	@Test
	public void test1() {
		// syst:systrace
		System.out.println("Demo.test1()");
		int inputMoney = 100;
		
		// 1、从小到大自动类型转换
		// 2、从大到小需要强制类型转换，可能会丢失精度(装水的杯子大小不一样)
		// byte->short(char)->int->long->float->double
		char ch = 'a';// 在编码表里面a用97代表
		System.out.println(ch);// a
		System.out.println(ch + 1);// 97+1=98 从小到大自动类型转换
		System.out.println(ch + 2);// 97+1=99 从小到大自动类型转换
		System.out.println((char)(ch + 1));// b 从大到小需要强制类型转换
		System.out.println((char)(ch + 2));
		
		System.out.println((int)3.14);// 3 丢失精度
	}
	
	@Test
	public void test2() {
		int num1 = 3;
		int num2 = 5;
		int result = num1 + num2;
		System.out.println(result);
		System.out.println(8 / 2);// 4
		System.out.println(8 % 2);// 0  能整除的余数是0
		System.out.println(8 / 5);// 1 
		System.out.println(8 % 5);// 3 
	}
	
	@Test
	public void test3() {
		int i = 3;
		i = i + 1;
		System.out.println(i);// 4
		i++; // ++i; 1、单独使用的时候，++、--在前后是没有差别的
		System.out.println(i);// 5
		System.out.println(i++);// 5  i=6
		System.out.println(++i);// 7
	}
	
	@Test
	public void test4() {
		// 比较运算符：>   <    >=     <=    !=
		// 比较之后的结果只有两种情况：true、false，所以比较运算的结果是boolean类型
		System.out.println(3 >= 5); // false
		System.out.println(5 >= 5); // true
	}
	
	@Test
	public void test5() {
//		&&：两边的结果都是true，结果才是true
//		||：两边只要有一个是true，结果就是true
//		顺利毕业： true
//		1、平时成绩>60                  boolean(true)
//		&&   ||
//		2、四级成绩>400                boolean(true)
		int score1 = 61;
		int score2 = 380;
		System.out.println(score1 > 60 && score2 > 400);// false
		System.out.println(score1 > 60 || score2 > 400);// true
	}
	
	// &&和||短路运算：
	@Test
	public void test6() {
		// int num3, num4, num5;
		int num1 = 3;
		int num2 = 5;
		// && 短路
		System.out.println(num1 < 0 && num1++ < num2);// false
		System.out.println(num1);// 3
		System.out.println(num2);// 5
		// || 短路
		System.out.println(num1 > 0 || num1++ < num2);// true
		System.out.println(num1);// 3
		System.out.println(num2);// 5
	}
	
	@Test
	public void test7() {
//		>=90   <=100   优秀 
//		>=80    <90       良好
//		>=70    <80       一般
//		>=60    <70      及格
//		<60                    不及格
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入成绩：");
		int score = scanner.nextInt();
		
		if (score >= 90 && score <= 100) {
			System.out.println("优秀");
		} else if (score >= 80 && score < 90) {
			System.out.println("良好");
		} else if (score >= 70 && score < 80) {
			System.out.println("一般");
		} else if (score >= 60 && score < 70) {
			System.out.println("及格");
		} else {
			System.out.println("不及格");
		}
		
		
	}
	
//	计算某年是不是闰年：
//	1、能被4整除，但是不能被100整除  
//	||
//	2、能被400整除
	@Test
	public void test66() {
		// int year = 2000;
		// 这个Scanner可以实现从控制台里面读取数据
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入年份: ");
		int year = scanner.nextInt();
		
		if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
			System.out.println("是闰年");
		} else {
			System.out.println("不是闰年");
		}
		
	}
	
	
}
